#include <iostream>
#include <memory>

class Test
{
public:
    Test():a(std::make_unique<int>())
    {
        std::cout << "构造函数\n";
    }
    ~Test()
    {
        std::cout << "析构函数\n";
    }
private:
    std::unique_ptr<int>a;
};

int main()
{

    // 独占指针
    //RAII+模板+运算符重载
    //make_unique

    //std::unique_ptr<Test> p(new Test);
    std::unique_ptr<Test> p=std::make_unique<Test>();

    //删除拷贝构造和赋值运算符重载
    //std::unique_ptr<Test>p2;
    //p2=p


    //智能指针和裸露指针不要混用
    Test*t=p.get();
    

    return 0;
}




